package com.vito.oa.act.service;

import java.util.List;
import java.util.Map;

import com.vito.oa.act.model.ProcessGroupModel;

/**
 * 审批流程分组
 * 
 * @author xuezhennan
 *
 */
public interface OaActProcessGroupService {
	/**
	 * 查询企业下所有组
	 * 
	 * @param group
	 * @return
	 */
	public List<ProcessGroupModel> queryGroups(ProcessGroupModel group);

	/**
	 * 查询组与包含流程
	 * 
	 * @param param
	 * @return
	 */
	public List<ProcessGroupModel> queryGroupsAndProcess(Map<String, String> param);

	/**
	 * 根据组ID查询组信息
	 * @param groupId
	 * @return
	 */
	public ProcessGroupModel queryGroupById(String groupId);
	/**
	 * 根据组ID查询改组下流程数量
	 * @param groupId
	 * @return 流程数量
	 */
	public int queryGroupProcessCount(String groupId);

	/**
	 * 新建组
	 * 
	 * @param group
	 */
	public void saveDefinedGroup(ProcessGroupModel group);

	/**
	 * 修改组与包含流程
	 * 
	 * @param group
	 */
	public void updateGroupAndProcess(ProcessGroupModel group);
	/**
	 * 修改组基本信息
	 * @param group
	 */
	public void updateGroupBase(ProcessGroupModel group);

	/**
	 * 删除组
	 * 
	 * @param groupId
	 * @return
	 */
	public int deleteDefinedGroup(String groupId);

	/**
	 * 移动流程到组
	 * 
	 * @param process
	 */
	public void addProcessToGroup(ProcessGroupModel process);

	/**
	 * 断开流程与所在组关系
	 * 
	 * @param process
	 */
	public void deleteProcessFromGroup(ProcessGroupModel process);

	/**
	 * 查询无组流程，并将其移动到系统默认组
	 * 
	 * @param companyId
	 */
	public void addProcessToSysGroup(String companyId);

}
